#include <stdio.h>

int main(){
    int n,h,delta;
    scanf("%d %d %d",&n,&h,&delta);
    int i,j,k;
    int** input=new int*[n];
    int** dp=new int*[n];
    int* dph=new int[h];
    for( i=0;i<n;i++)
    {
        input[i]=new int[h];
        dp[i]=new int[h];
        for(j=0;j<h;j++)
        {
            input[i][j]=0;
            dp[i][j]=0;
            dph[j]=0;
        }
    }

    int ni,num;
    for( i=0;i<n;i++)
    {
        scanf("%d",&ni);
        for(j=0;j<ni;j++)
        {
            scanf("%d",&num);
            input[i][num-1]++;
        }
    }


    for( i=0;i<n;i++)
    {
        dp[i][0]=input[i][0];
        if(dph[0]<input[i][0])
        {
            dph[0]=input[i][0];
        }
    }

    for(j=1;j<h;j++){
        int maxh=0;
        for(i=0;i<n;i++)
        {
            int max=dp[i][j-1];
            if(j>=delta)
            {
                if(max<dph[j-delta])
                {
                    max=dph[j-delta];
                }
            }
            dp[i][j]=max+input[i][j];
            if(maxh<dp[i][j])
            {
                maxh=dp[i][j];
            }      
        }
        dph[j]=maxh;
    }
    printf("%d\n",dph[h-1]);

    for( i=0;i<n;i++)
    {
        delete dp[i];
        delete input[i];
    }
    delete dp;
    delete input;
    return 0;
}